package cn.core.sign.service.intf;

import cn.core.sign.ao.RoleAO;
import cn.core.sign.eo.AuthList;
import cn.core.sign.eo.Role;
import cn.core.sign.qo.RoleQO;
import cn.core.sign.vo.RoleMenuTreeVO;
import cn.core.sign.vo.RoleVO;
import cn.core.tool.util.Paging;
import cn.core.tool.util.Param;

import java.util.Collection;

/**
 * 角色 服务接口
 */
public interface IRoleService {

  /**
   * 角色 >>> 保存
   */
  public Role save(Role eo) throws Exception;

  /**
   * 角色 >>> 批量保存
   */
  public Collection<Role> saveBatch(Collection<Role> eos) throws Exception;

  /**
   * 角色 >>> 修改
   */
  public Role update(Role eo) throws Exception;

  /**
   * 角色 >>> 批量修改
   */
  public Collection<Role> updateBatch(Collection<Role> eos) throws Exception;

  /**
   * 角色 >>> 删除
   */
  public void remove(Role eo) throws Exception;

  /**
   * 角色 >>> 批量删除
   */
  public void removeBatch(Collection<Role> eos) throws Exception;

  /**
   * 角色 >>> 数据量
   */
  public Long count(RoleQO qo) throws Exception;

  /**
   * 角色 >>> 主键查询
   */
  public Role pk(RoleQO qo) throws Exception;

  /**
   * 角色 >>> 查询
   */
  public Collection<Role> query(RoleQO qo) throws Exception;

  /**
   * 角色 >>> 分页
   */
  public Paging<Role> paging(Param<RoleQO> param) throws Exception;

  /**
   * 角色 >>> 业务数据量
   */
  public Long countVo(RoleQO qo) throws Exception;

  /**
   * 角色 >>> 业务主键查询
   */
  public RoleVO pkVo(RoleQO qo) throws Exception;

  /**
   * 角色 >>> 业务查询
   */
  public Collection<RoleVO> queryVo(RoleQO qo) throws Exception;

  /**
   * 角色 >>> 业务分页
   */
  public Paging<RoleVO> pagingVo(Param<RoleQO> param) throws Exception;

  /**
   * 用户Id 登录端 >>> 授权列表
   */
  public Collection<String> getAuthListByRoleIdLoginSide(RoleAO qo) throws Exception;

  /**
   * 角色 >>> 保存授权列表
   */
  public Collection<AuthList> saveAuthList(RoleAO qo) throws Exception;

  /**
   * 用户Id 登录端 >>> 角色菜单树
   */
  public RoleMenuTreeVO getRoleMenuTreeByRoleIdLoginSide(RoleAO qo) throws Exception;

}
